package com.zwx.aray.leetcode_3;

/**
 * 买股票的最佳时机
 *
 * @author 文希
 * @create 2019-06-06 15:42
 **/
public class StockMaxMoney {

    /**
     * 给定一个数组，它的第i个元素是一直给定股票第i天的价格
     * 设计一个算法来计算你所能获取的最大利润。你可以尽可能的完成更多的交易（多次买卖一支股票）。
     * 示例：
     * 输入：[7,1,5,3,6,4]
     * 输出：7
     * 解释：
     * 在第2天（股票价格=1）的时候买入，在第3天（股票价格=5）的时候买入，这笔交易所能获得利润=5-1=4.
     * 随后，在第4天（股票价格=3）的时候买入，在第5天（股票的价格=6）的时候卖出，这笔交易所获得的利润=6-3=3
     * 总共获得利润=4+3=7
     * 分析：
     * 因为我们可以竟可能的完成更多的交易，也就是说只要后一天的价格比前一天的价格高，我们就可以买入卖出。
     * 因此实际上我们只要累加price[i] - price[i-1] > 0 就可以了。
     */
    private static int maxProfit(int[] prices) {
        int max = 0;
        for (int i = 1; i < prices.length; i++) {
            if (prices[i] > prices[i - 1]) {
                max += (prices[i] - prices[i - 1]);
            }
        }
        return max;
    }

    private static int maxProfit1(int[] prices) {
        int min = Integer.MAX_VALUE, profit = 0;
        for (int i = 0; i < prices.length; i++) {
            if (prices[i] < min) {
                min = prices[i];
            }
            if (profit < prices[i] - min) {
                profit = prices[i] - min;
            }
        }
        return profit;
    }

    public static void main(String[] args) {
        int[] prices = new int[]{7, 1, 5, 3, 6, 4};
        int i = maxProfit(prices);
        System.out.println("i = " + i);
    }

}
